[BLK] Handle block devices with more than 2^32 sectors.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Tue, 21 Nov 2006 10:16:58 +0000 (10:16 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Tue, 21 Nov 2006 10:16:58 +0000 (10:16 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/drivers/xen/blkback/common.h
linux-2.6-xen-sparse/drivers/xen/blkback/vbd.c
linux-2.6-xen-sparse/drivers/xen/blkback/xenbus.c
linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c

index d55e388107ab52cf178c158411d79bcc0e6046d2..1b5b6a427e9035b1c91cdcab9691691c0b98f703 100644 (file)
@@ -113,7 +113,7 @@ int vbd_create(blkif_t *blkif, blkif_vdev_t vdevice, unsigned major,
               unsigned minor, int readonly);
 void vbd_free(struct vbd *vbd);
 
-unsigned long vbd_size(struct vbd *vbd);
+unsigned long long vbd_size(struct vbd *vbd);
 unsigned int vbd_info(struct vbd *vbd);
 unsigned long vbd_secsize(struct vbd *vbd);
 
index 0abd23a5217ee729a581f20f654b4a7d2a5c5c57..34048b32c451ea8f74607f4843ba3bdc886b35bc 100644 (file)
@@ -35,7 +35,7 @@
 #define vbd_sz(_v)   ((_v)->bdev->bd_part ?                            \
        (_v)->bdev->bd_part->nr_sects : (_v)->bdev->bd_disk->capacity)
 
-unsigned long vbd_size(struct vbd *vbd)
+unsigned long long vbd_size(struct vbd *vbd)
 {
        return vbd_sz(vbd);
 }
index 4d23434b714f0d04bdf845b51124ca1fbf026a3a..349ae64d0fea2e25a0f85be114fdcd98d85dc37b 100644 (file)
@@ -389,7 +389,7 @@ again:
        if (err)
                goto abort;
 
-       err = xenbus_printf(xbt, dev->nodename, "sectors", "%lu",
+       err = xenbus_printf(xbt, dev->nodename, "sectors", "%llu",
                            vbd_size(&be->blkif->vbd));
        if (err) {
                xenbus_dev_fatal(dev, err, "writing %s/sectors",
index 557288b45a0d6fc054f8f6620fb06bcdb0fb2f49..019e1cca254007cc3942039d584397b255db311d 100644 (file)
@@ -298,7 +298,8 @@ static void backend_changed(struct xenbus_device *dev,
  */
 static void connect(struct blkfront_info *info)
 {
-       unsigned long sectors, sector_size;
+       unsigned long long sectors;
+       unsigned long sector_size;
        unsigned int binfo;
        int err;
 
@@ -309,7 +310,7 @@ static void connect(struct blkfront_info *info)
        DPRINTK("blkfront.c:connect:%s.\n", info->xbdev->otherend);
 
        err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
-                           "sectors", "%lu", &sectors,
+                           "sectors", "%llu", &sectors,
                            "info", "%u", &binfo,
                            "sector-size", "%lu", &sector_size,
                            NULL);